import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
// 数据库连接
import { TypeOrmModule } from '@nestjs/typeorm';

import { TestModule } from './test.module';
// user 子模块加载
import { UserModule } from './user/user.module';
import { User } from './entities/User.entity';
// wealth 子模块
import { WealthModule } from './eastWealth/wealth.module';
import { test_jy, jy_data, summary } from './entities/Wealth.entity';
import { stocks } from './entities/stocks.entity';

// 网关 长连接
import { WsGateway } from './ws/ws.gateway';

/* 
  根模块
  运用结构
  负责组装工作
*/
@Module({
  // 依赖注入（模块，组件，库）
  imports: [
    TestModule,
    // 连接数据库
    TypeOrmModule.forRoot({
      type: 'mysql',
      connectorPackage: 'mysql2',
      host: 'localhost', // "172.28.146.72",
      port: 3306,
      username: 'root', // "Emily",
      password: '123456789', // "123456", // "emily_zjy",
      // 数据库名称
      database: 'energytest', // "demo",
      // 定义数据库表格结构与实体类字段同步（一旦数据库少了字段就会自动加入）
      // "synchronize": true,
      // 自动加载实体
      autoLoadEntities: true,
      // 数据库 实体类
      entities: [
        // 扫描本项目中 .entity 文件
        // __dirname + '/../**/*.entity{.ts, .js}',
        User,
        test_jy,
        jy_data,
        summary,
        stocks,
      ],
    }),
    // TypeOrmModule.forRoot({
    //   "type": "mysql",
    //   "host": "localhost",
    //   "port": 3306,
    //   "username": "root",
    //   "password": "123456",
    //   // 数据库名称
    //   "database": "jy_data",
    //   // 定义数据库表格结构与实体类字段同步（一旦数据库少了字段就会自动加入）
    //   // "synchronize": true,
    //   // 自动加载实体
    //   autoLoadEntities: true,
    //   // 数据库 实体类
    //   "entities": [
    //     // 扫描本项目中 .entity 文件
    //     __dirname + '*.entity{.ts, .js}',
    //     // User,
    //     // test_jy,
    //     // jy_data,
    //   ],
    // }),

    // 注册实体类，注册表
    TypeOrmModule.forFeature([stocks]),
    UserModule, // 子模块注册
    WealthModule,
  ],
  // 控制器，控制请求，响应
  controllers: [AppController],
  // 实例化的服务，可以在这个模块直接共享
  providers: [
    AppService,
    WsGateway, // webSocket 长连接
  ],
})
// 在这里使用
export class AppModule {
  // 建立连接
  // constructor( private readonly connection: Connection ){}
}
